技術(shù)一直在發(fā)展,數(shù)據(jù)也在發(fā)展,因此它的存儲(chǔ)和管理方法也在發(fā)展。大多數(shù)人不會(huì)關(guān)心一臺(tái)服務(wù)器如何一次處理多個(gè)連接,或者它如何真正處理大量網(wǎng)絡(luò)流量。他們可能很好奇,但不會(huì)獲得大部分技術(shù)術(shù)語。然而,在科技界,了解這一點(diǎn)很重要。首先,這將幫助您提高知識(shí)水平。其次,它會(huì)讓您在準(zhǔn)備軟件甚至測試軟件時(shí)了解“最新消息”。有無數(shù)的應(yīng)用程序在服務(wù)器上運(yùn)行。人們無法想象處理這一切的那些(服務(wù)器管理員)的壓力有多大。一個(gè)正確的策略是必須的,否則它可能會(huì)帶來災(zāi)難,也許是關(guān)鍵數(shù)據(jù)和/或財(cái)務(wù)的丟失。
一臺(tái)服務(wù)器如何處理多個(gè)連接?
這是一個(gè)常見且令人難以置信的問題,即 – 一臺(tái)服務(wù)器如何處理多個(gè)連接?假設(shè)多個(gè)客戶端同時(shí)連接到端口 80。這意味著“連接”實(shí)際上代表了一個(gè)包,它包含一個(gè)包含目標(biāo)端口的頭字段,在這種情況下是 80。還有許多其他端口具有不同的序列號(hào)以供識(shí)別。多個(gè)客戶端可能連接到同一個(gè)端口,具體取決于哪個(gè)客戶端分配了哪個(gè)端口。插座表示確切的終點(diǎn)。
很明顯,每個(gè)客戶端的IP地址肯定會(huì)有所不同,服務(wù)器的IP地址也是如此。端口僅用于一般的源和目標(biāo)目的,因此將允許多??個(gè)連接,而這些連接又將被轉(zhuǎn)移到它們應(yīng)該到達(dá)的確切服務(wù)器。
一個(gè)人還需要記住規(guī)則。套接字由語法識(shí)別 - {SRC-IP, SRC-PORT, DEST-IP, DEST-PORT, PROTOCOL}。請(qǐng)注意,提及協(xié)議很重要。因此,如果兩個(gè)客戶端嘗試使用同一個(gè)端口連接,那么根據(jù)規(guī)則,它將是 – socket1{SRC-A, 100, DEST-X, 80, TCP} 和 socket2{SRC-B, 100, DEST-X, 80、TCP}。總結(jié)一下這個(gè)特殊情況,主機(jī) A 通過端口 80 與服務(wù)器 X 聯(lián)系,主機(jī) B 也通過相同的端口與同一臺(tái)服務(wù)器聯(lián)系。這些客戶端的 IP 地址當(dāng)然是不同的。
現(xiàn)在服務(wù)器將決定應(yīng)該優(yōu)先考慮哪個(gè)套接字。如果單個(gè)服務(wù)器正在偵聽同一端口,則可能有多個(gè)套接字連接,這些套接字可以來自相同或不同的客戶端。只要該服務(wù)器知道哪個(gè)請(qǐng)求來自何處(通過套接字),它就可以使用相同的套接字響應(yīng)相應(yīng)的客戶端。它不需要在自己的節(jié)點(diǎn)中打開另一個(gè)端口,但可以使用客戶端最初嘗試連接的原始端口。事實(shí)上,它應(yīng)該使用相同的初始套接字進(jìn)行響應(yīng),以免浪費(fèi)資源。
一個(gè)服務(wù)器的兩個(gè)不同進(jìn)程可能監(jiān)聽同一個(gè)端口,前提是它們都使用不同的協(xié)議;否則是不可能的。服務(wù)器也被歸類為單和多線程。
如果一臺(tái)服務(wù)器使用單個(gè)子進(jìn)程來為所有套接字提供服務(wù),則它被稱為單線程服務(wù)器。如果服務(wù)器使用多個(gè)子進(jìn)程來通過將每個(gè)套接字分配給一個(gè)子進(jìn)程來服務(wù)多個(gè)請(qǐng)求,那么它被稱為多線程服務(wù)器。這是服務(wù)器一次處理多個(gè)連接的方式。
人們不應(yīng)該假設(shè)如果提到這兩個(gè)過程,那么它們之間一定存在某種父子關(guān)系。通常,操作系統(tǒng)允許子進(jìn)程繼承父進(jìn)程的所有內(nèi)容。因此,如果一個(gè)進(jìn)程(比如)A 正在偵聽多個(gè)套接字,那么其他(子)進(jìn)程如 A1、A2……也可以偵聽,但不能偵聽另一個(gè)完全不相關(guān)的進(jìn)程 B。兩個(gè)或多個(gè)不同的進(jìn)程不能偵聽由操作系統(tǒng)管理的同一個(gè)套接字。如果操作系統(tǒng)不遵循這一點(diǎn),那么它將被稱為違反現(xiàn)有規(guī)則。